package com.example.hello.service;

import com.example.hello.dto.ForgotPasswordDTO;
import com.example.hello.dto.IdentityVerificationDTO;
import com.example.hello.dto.PasswordResetDTO;
import com.example.hello.dto.PasswordUpdateDTO;
import com.example.hello.dto.RegisterDTO;
import com.example.hello.dto.ResetPasswordDTO;
import com.example.hello.dto.UserDTO;
import com.example.hello.entity.User;
import com.github.pagehelper.PageInfo;
import java.util.Map;
import com.example.hello.common.Result;


public interface UserService {
  User getUserById(Long userId);

  User getUserByUsername(String username);

  PageInfo<User> getUserList(User user, Integer pageNum, Integer pageSize);

  boolean updateUserInfo(UserDTO userDTO);

  boolean updatePassword(Long userId, PasswordUpdateDTO passwordUpdateDTO);

  boolean updateUserStatus(Long userId, Integer status);

  User register(RegisterDTO registerDTO);
  
  // 添加忘记密码方法
  String forgotPassword(ForgotPasswordDTO forgotPasswordDTO);
  
  // 添加重置密码方法
  boolean resetPassword(ResetPasswordDTO resetPasswordDTO);

  /**
   * 验证用户身份信息
   * @param verificationDTO 身份验证信息
   * @return 验证结果，包含用户ID和验证令牌
   */
  Map<String, Object> verifyIdentity(IdentityVerificationDTO verificationDTO);
  
  /**
   * 重置用户密码
   * @param resetDTO 密码重置信息
   * @return 是否重置成功
   */
  Result<Void> resetPassword(PasswordResetDTO resetDTO);

  /**
   * 重置密码
   * 
   * @param username 用户名
   * @param newPassword 新密码
   * @return 是否成功
   */
  boolean resetPassword(String username, String newPassword);
}